home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / diag / iozon115.zip / README < prev   
Internet Message Format  |  1992-05-29  |  12KB

  1. From comp.sources.misc Fri May 29 21:49:31 1992
  2. Newsgroups: comp.sources.misc
  3. From: bill@hood.tsg.tandem.com (Bill Norcott)
  4. Subject:  v30i016:  iozone - IOzone V1.15 benchmark of sequential file I/O
  5. Message-ID: <1992May23.180500.18153@sparky.imd.sterling.com>
  6. Followup-To: comp.sources.d
  7. X-Md4-Signature: d65ae07ff94005350b62c4dd08f3409b
  8. Sender: kent@sparky.imd.sterling.com (Kent Landfield)
  9. Reply-To: norcott_bill@tandem.com  (Bill Norcott)
  10. Organization: Tandem Computers, Inc.
  11. Date: Sat, 23 May 1992 18:05:00 GMT
  12. Approved: kent@sparky.imd.sterling.com
  13. Submitted-by: bill@tandem.com (Bill Norcott)
  14. Posting-number: Volume 30, Issue 16
  15. Archive-name: iozone
  16. Environment: AIX, BSD, HP-UX, MS-DOS, POSIX, SVR3.2, ULTRIX, UNIX, VMS
  17. Supersedes: iozone: Volume 28, Issue 16
  18.  
  19. Attached is version V1.15 of my IOzone benchmark of sequential file
  20. I/O.  IOzone measures the speed at which your system can read and write
  21. files of various sizes and record lengths.  It prints out the measurement
  22. in bytes-per-second.  IOzone is highly portable and now runs on about two
  23. dozen different types of systems.
  24.  
  25. This version adds support for a few more systems, and also ANSI C
  26. which will work on any operating system.  Another notable feature of
  27. this release is support for UNIX RAW DEVICES such as tape drives,
  28. floppy disk drives, and disk partitions.  This lets you test the
  29. device without going through the file system buffer cache.
  30.  
  31. This distribution is a shell archive file containing two files: REAME &
  32. iozone.c 
  33.  
  34. As always, I appreciate your comments and suggestions for IOzone.
  35.  
  36. Regards,
  37. Bill Norcott
  38. norcott_bill@tandem.com
  39.  
  40.     IOZONE: Performance Test of Sequential File I/O  --  V1.15 (5/1/92)
  41.         By Bill Norcott
  42.  
  43.     Operating System: MIPS RISC/os (System V libraries)
  44.  
  45. IOZONE: help mode
  46.  
  47.        'IO Zone' Benchmark Program
  48.  
  49.        Author: Bill Norcott (norcott_bill@tandem.com)
  50.                1060 Hyde Avenue
  51.                San Jose, CA  95129
  52.  
  53.   Copyright 1991, 1992   William D. Norcott
  54.  
  55.   License to freely use and distribute this software is hereby granted 
  56.   by the author, subject to the condition that this copyright notice 
  57.   remains intact.  The author retains the exclusive right to publish 
  58.   derivative works based on this work, including, but not limited to, 
  59.   revised versions of this work
  60.  
  61.   This test writes a X MEGABYTE sequential file in Y byte chunks, then
  62.   rewinds it  and reads it back.  [The size of the file should be
  63.   big enough to factor out the effect of any disk cache.].  Finally,
  64.   IOZONE deletes the temporary file
  65.         
  66.   The file is written (filling any cache buffers), and then read.  If the
  67.   cache is >= X MB, then most if not all the reads will be satisfied from
  68.   the cache.  However, if it is less than or equal to .5X MB, then NONE of
  69.   the reads will be satisfied from the cache.  This is becase after the 
  70.   file is written, a .5X MB cache will contain the upper .5 MB of the test
  71.   file, but we will start reading from the beginning of the file (data
  72.   which is no longer in the cache)
  73.         
  74.   In order for this to be a fair test, the length of the test file must
  75.   be AT LEAST 2X the amount of disk cache memory for your system.  If
  76.   not, you are really testing the speed at which your CPU can read blocks
  77.   out of the cache (not a fair test)
  78.         
  79.   IOZONE does not normally test the raw I/O speed of your disk or system.
  80.   It tests the speed of sequential I/O to actual files.  Therefore, this
  81.   measurement factors in the efficiency of you machines file system,
  82.   operating system, C compiler, and C runtime library.  It produces a 
  83.   measurement which is the number of bytes per second that your system
  84.   can read or write to a file.  
  85.  
  86.   You use IOZONE to test the I/O speed of a UNIX 'RAW DEVICE' such
  87.   as a tape drive, hard disk drive, floppy disk drive, etc.  To do this,
  88.   you must define the symbol NO_DELETE when you compile IOZONE.  If you
  89.   fail to define NO_DELETE, IOZONE will treat the raw device as a 
  90.   temporary file, and WILL DELETE THE RAW DEVICE after the test completes!
  91.   When testing raw devices, any UNIX buffer caching is bypassed.  IOZONE
  92.   still is using the read()/write() system calls, so you are not quite
  93.   testing the device at the low level of say, disk controller diagnostics.
  94.   On the other hand, that kind of testing is highly system- and device-
  95.   specific, and my goal for IOZONE has been to build a highly portable
  96.   benchmark -- not one which is tied to a particular operating system or
  97.   hardware configuration.  In practice, I have tested raw disk and tape
  98.   peripherals and the results are very close to the manufacturer's specs
  99.   for those devices.
  100.  
  101.   For V1.06, IOZONE adds the 'auto test' feature.  This is activated
  102.   by the command:  'iozone auto' .  The auto test runs IOZONE repeatedly  
  103.   using record sizes from 512 to 8192 bytes, and file sizes from 1 to 16
  104.   megabytes.  It creates a table of results.
  105.         
  106.   For V1.06, IOZONE lets you specify the number of file system sizes and      
  107.   record lengths to test when using auto mode.  Define the constants
  108.   MEGABYTES_ITER_LIMIT and RECLEN_ITER_LIMIT as seen below      
  109.         
  110.   For V1.09 you can show the development help by typing 'iozone help'
  111.         
  112.   For V1.10 IOzone traps SIGINT (user interrupt) and SIGTERM
  113.   (kill from shell) signals and deletes the temporary file
  114.         
  115.   For V1.11 IOzone requires no compilation flags for AIX
  116.   Also, come miscellaneous cleanups have been made to the source
  117.         
  118.   For V1.12 IOzone support has been added for the MIPS RISCos,
  119.   Tandem Non-StopUX, and Tandem GUARDIAN 90 operating systems.
  120.   IOzone is now a 'Conforming POSIX.1 Application'  (IEEE Std 1003.1-1988)
  121.         
  122.   For V1.14 IOzone supports Next and QNX systems.  It also prints out
  123.   the name of the operating system when run.  There is now the option
  124.   to force IOzone to flush all writes to disk via fsync()
  125.   Defining USE_FSYNC will make IOzone include in its measurements the time
  126.   it takes to actually write the data onto disk, as opposed to
  127.   just writing into the system cache.  BSD UNIX and SVR4 support fsync(),
  128.   but SVR3 and generic POSIX systems do not.  I have enabled USE_FSYNC
  129.   for the systems which support it
  130.         
  131.   For V1.14, we now officially support AT&T SVR4.  It has worked just
  132.   fine using SVR4 with previous versions of IOzone.  Also, for systems
  133.   which use the times() function, we calculate the 'base time' the first
  134.   time we ever call time_so_far(), then subtract this time from all
  135.   future measurements.  This increases the precision of our measurement
  136.   and fixes a loss-of-precision problem which occurred on some systems
  137.         
  138.   For V1.15, add the NO_DELETE symbol.  If you define NO_DELETE during
  139.   the compilation (e.g., for UNIX systems compile with cc -DNO_DELETE),
  140.   IOzone will not delete the 'temporary' file which it reads & writes.
  141.   This is REQUIRED when testing RAW DEVICES such as disks and tape drives!
  142.         
  143.  
  144.   This program has been ported and tested on the following computer
  145.   operating systems:
  146.  
  147.     Vendor             Operating System    Notes on compiling IOzone
  148.     -------------------------------------------------------------------------
  149.     Apollo          Domain/OS           no cc switches -- BSD domain
  150.     AT&T               UNIX System V Release 4
  151.     AT&T 6386WGS       AT&T UNIX 5.3.2     define SYSTYPE_SYSV
  152.     Generic AT&T       UNIX System V R3    may need cc -DSVR3
  153.     Convergent         Unisys/AT&T Sys5r3  cc -DCONVERGENT -o iozone iozone.c
  154.     Digital Equipment  ULTRIX V4.1 
  155.     Digital Equipment  VAX/VMS V5.4        see below **         
  156.     Digital Equipment  VAX/VMS (POSIX) 
  157.     Hewlett-Packard    HP-UX 7.05
  158.     IBM                AIX Ver. 3 rel. 1
  159.     Interactive        UNIX System V R3    
  160.     Microsoft          MS-DOS 3.3          tested Borland, Microsoft C
  161.     MIPS               RISCos 4.52
  162.     NeXt               NeXt OS 2.x
  163.     OSF                OSF/1
  164.     Portable!          POSIX 1003.1-1988   may need to define _POSIX_SOURCE 
  165.     QNX                QNX 4.0
  166.     SCO                UNIX System V/386 3.2.2
  167.     SCO                XENIX 2.3
  168.     SCO                XENIX 3.2
  169.     Silicon Graphics   UNIX                cc -DSGI -o iozone iozone.c
  170.     Sony Microsystems  UNIX                same as MIPS
  171.     Sun Microsystems   SUNOS 4.1.1
  172.     Tandem Computers   GUARDIAN 90         1. call the source file IOZONEC
  173.                                            2. C/IN IOZONEC/IOZONE;RUNNABLE
  174.                                            3. RUN IOZONE
  175.     Tandem Computers   Non-Stop UX
  176.         
  177.     ** for VMS, define iozone as a foreign command via this DCL command:       
  178.  
  179.        $IOZONE :== $SYS$DISK:[]IOZONE.EXE      
  180.  
  181.        this lets you pass the command line arguments to IOZONE
  182.  
  183.   Acknowledgements to the following persons for their feedback on IOzone:       
  184.  
  185.   Andy Puchrik, Michael D. Lawler, Krishna E. Bera, Sam Drake, John H. Hartman, 
  186.   Ted Lyszczarz, Bill Metzenthen, Jody Winston, Clarence Dold, Axel
  187.   Dan Hildebrand, Joe Nordman, Bob Fritz, Jeff Johnson
  188.         
  189.   --- MODIFICATION HISTORY:
  190.  
  191.  
  192.     3/7/91 William D. Norcott (Bill.Norcott@nuo.mts.dec.com)
  193.                                created
  194.  
  195.     3/22/91 Bill Norcott       tested on OSF/1 ... it works
  196.  
  197.     3/24/91 Bill Norcott       V1.02 -- use calloc in TURBOC to
  198.                                        fix bug with their malloc
  199.  
  200.     3/25/91 Bill Norcott       V1.03 -- add ifdef for XENIX
  201.                                        
  202.     3/27/91 Bill Norcott       V1.04 -- Includes for SCO UNIX
  203.                                        
  204.     4/26/91 Bill Norcott       V1.05 -- support AIX and SUNos, check
  205.                                        length of read() and write()
  206.     4/26/91 Bill Norcott       V1.06 -- tabulate results of a series 
  207.                                        of tests
  208.     5/17/91 Bill Norcott       V1.07 -- use time() for VMS
  209.     5/20/91 Bill Norcott       V1.08 -- use %ld for Turbo C and
  210.                                        use #ifdef sun to bypass
  211.                                        inclusion of limits.h
  212.     6/19/91 Bill Norcott       V1.09 -- rid #elif to support HP-UX and 
  213.                                        Silicon Graphics UNIX, and
  214.                                        add #ifdef SGI
  215.                                        add #ifdef CONVERGENT
  216.                                        for Convergent Technologies
  217.                                        also add help option
  218.     7/2/91 Bill Norcott        V1.10 -- delete file if get SIGINT
  219.                                        or SIGTERM
  220.     8/20/91 Bill Norcott       V1.11 -- require no flags with AIX
  221.     11/4/91 Bill Norcott       V1.12 -- support MIPS RISCos
  222.                                          Tandem NonStop-UX, and
  223.                                         IEEE Std POSIX 1003.1-1988
  224.     12/4/91 Bill Norcott       V1.13 -- support NeXT; tell host OS type
  225.     1/23/92 Bill Norcott      V1.14 -- support QNX & use calloc() for buffer
  226.     5/1/92 Bill Norcott      V1.15 -- support SVR4; fix loss of precision
  227.                                        in times() function.  
  228.                                        support Interactive UNIX
  229.                                        detect ANSI if no O/S
  230.                                        Also, define for generic SVR3
  231.                                        Apollo Domain/OS
  232.                                        Define NO_DELETE and iozone wont
  233.                                        delete the temp file.  Needed to
  234.                                        test raw devices without deleting
  235.                                        them
  236.